Сайт портала открытых данных
-Необходимо получить API на сайте https://apidata.mos.ru -формирование запроса (через браузер, через R…)
-установить Node.js: https://nodejs.org/
-установить утилиту, выполнив npm install -g datamos-geojson в командной строке
-запустить утилиту, выполнив datamos-geojson в командной строке
https://apidata.mos.ru/v1/datasets/{DatasetId}/features?api_key={КЛЮЧ_API}
http://api.data.mos.ru/v1/datasets/{DatasetId}/features?bbox={bbox}&api_key={КЛЮЧ_API}
datasetId = "1193" #номер датасета, можно узнать в паспорте
#version = "1" #номер версии (опционально)
#release = "59" #номер релиза (опционально)
api_key = "b0c0ad1adf1319a3a8b1c2ed7649b21e" #уникальный ключ API
url = paste0("https://apidata.mos.ru/v1/datasets/", datasetId,"/features?api_key=",api_key) # формирование ссылки
data_sf = url %>% st_read() #создание пространственных данных из json
mapview(data_sf)
data_json = url %>% readr::read_file() %>% iconv("UTF-8")
data_json_edited = mgsub::mgsub(data_json, c('\\\"Attributes\\\":\\{', '\\}\\,\"type\":\"Feature\"\\}'), c('','\\,\"type\"\\:\"Feature\"\\}')) #удаляем Attributes как группу, которая содержит в себе множетсво разных характеристик
data_sf2 = data_json_edited %>% sf::read_sf() #создание пространственных данных из json
glimpse(data_sf2) #смотрим на стркутру получившегося файла
## Rows: 31
## Columns: 21
## $ DatasetId <int> 1193, 1193, 1193, 1193, 1193, 1193, 1193, …
## $ VersionNumber <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, …
## $ ReleaseNumber <int> 131, 131, 131, 131, 131, 131, 131, 131, 13…
## $ RowId <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ FullName <chr> "Красногвардейская участковая ветеринарная…
## $ ShortName <chr> "Красногвардейская УВЛ СББЖ ЮАО г Москвы",…
## $ ChiefName <chr> "Васильев Сергей Михайлович", "Махновецкая…
## $ ChiefPosition <chr> "Начальник Красногвардейской УВЛ СББЖ ЮАО"…
## $ INN <chr> "7708006274", "7708006274", "7713082400", …
## $ KPP <chr> "772501001", "772501001", "771401001", "77…
## $ OGRN <chr> "", "", "", "", "", "", "", "", "", "", ""…
## $ AdmArea <chr> "Южный административный округ", "Южный адм…
## $ District <chr> "район Царицыно", "Донской район", "Савёло…
## $ Address <chr> "город Москва, Каспийская улица, дом 40", …
## $ UNOM <chr> "3807027", "3807156", "2112412", "2112439"…
## $ PublicPhone <chr> "[ { \"is_deleted\": 0, \"PublicPhone\": \…
## $ WorkingHours <chr> "[ { \"is_deleted\": 0, \"DayOfWeek\": \"п…
## $ ClarificationOfWorkingHours <chr> "", "", "", "", "", "", "", "", "", "", ""…
## $ Comments <chr> "Структурное подразделение СББЖ ЮАО ГБУ «М…
## $ global_id <int> 4712784, 4712786, 4712787, 4712788, 471278…
## $ geometry <POINT [°]> POINT (37.66389 55.61745), POINT (37…
mapview(data_sf2) # смотрим на данные
get_datamos = function(datasetId) {
url = paste0("https://apidata.mos.ru/v1/datasets/", datasetId,"/features?api_key=","b0c0ad1adf1319a3a8b1c2ed7649b21e")
data_json = url %>% readr::read_file() %>% iconv("UTF-8")
data_json_edited = mgsub::mgsub(data_json, c('\\\"Attributes\\\":\\{', '\\}\\,\"type\":\"Feature\"\\}'), c('','\\,\"type\"\\:\"Feature\"\\}')) #удаляем Attributes как группу, которая содержит в себе множетсво разных характеристик
data_sf = data_json_edited %>% sf::read_sf()
return(data_sf)
}
ids = c(890, 60623, 1387, 886, 60624, 885, 902, 1232, 629) #номера нужных нам датасетов
sets_names = c("Waterpools", "Tennis", "Climbing", "Football", "Gym", "Regby", "Equestrian", "Ice skating", "SportHalls") #их названия
#one_dataset = get_datamos(datasetId) # применение функции к одному любому датасету
datasets = lapply(ids, get_datamos) # применение функции get_datamos ко всем нужным нам датаестам
names(datasets) <- sets_names # определение имен для всех элементов списка
# Создаем интерактивную карту с помощью tmap с возможностью переключения слоев
colors = c("aquamarine2","yellowgreen","lightskyblue3","maroon3","tan1") # цвета, чтобы было веселее
sport_data = 0
for (i in 1:length(datasets)) {
sport_data = sport_data+ tm_shape(datasets[[i]]) + tm_bubbles(group = sets_names[i], size = 0.1, col = colors[i])
}
tmap_mode("view") # интерактивный режим tmap
sport_data %>% tmap_leaflet() %>% leaflet::hideGroup(sets_names[-1]) # отображаем все данные на карте, используем leaflet для переключения слоев